<?php

class ConfigController extends SBaseController
{
	/**
	 * @var string the default layout for the views. Defaults to 'column2', meaning
	 * using two-column layout. See 'protected/views/layouts/column2.php'.
	 */
	public $layout='main';

	/**
	 * @var CActiveRecord the currently loaded data model instance.
	 */
	private $_model;

	/**
	 * Displays a particular model.
	 */
	public function actionView()
	{
        $this->layout="detail";
		$this->render('view',array(
			'model'=>$this->loadModel(),
		));
	}

	/**
	 * Creates a new model.
	 * If creation is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionCreate()
	{
		$model = new Config();

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Config']))
		{
            $model->attributes=$_POST['Config'];
            if($_POST['Config']['html_tag'] == 'textArea')
            {
                $model->value = $_POST['Config']['textAreaValue'];
            }
            else if($_POST['Config']['html_tag'] == 'radioList' || $_POST['Config']['html_tag'] == 'dropDownList')
            {
                $model->value = $_POST['values'][0];
            }
            elseif($_POST['Config']['html_tag'] == 'dateField')
            {
                $model->value = $_POST['Config']['dateFieldValue'];
            }
			if($model->save())
            {
                //Save values to config_option_value table
                for ($i=0, $n=$_POST['valueNumber']; $i<$n; $i++)
                {
                    $configOptionValue = new ConfigOptionValue();
                    $configOptionValue->config_id = $model->id;
                    $configOptionValue->label = $_POST['labels'][$i];
                    $configOptionValue->value = $_POST['values'][$i];
                    $configOptionValue->status = Lvc::STATUS_ENABLED;
                    $configOptionValue->sorder = Common::getNewestPosition($configOptionValue);
                    $configOptionValue->save();
                    $idnex++;
                }

                
                

				$this->redirect(array('view','id'=>$model->id));
            }
		}

        $this->layout="detail";
		$this->render('create',array(
			'model'=>$model,
		));
	}

	/**
	 * Updates a particular model.
	 * If update is successful, the browser will be redirected to the 'view' page.
	 */
	public function actionUpdate()
	{
		$model=$this->loadModel();

        $currentValues = ConfigOptionValue::dumpAllValueToArray($model->id);

		// Uncomment the following line if AJAX validation is needed
		// $this->performAjaxValidation($model);

		if(isset($_POST['Config']))
		{
			$model->attributes=$_POST['Config'];
			if($model->save())
            {
                // Delete old values
//                ConfigOptionValue::model()->deleteAll("config_id=".$model->id);

                // Save values to config_option_value table
                for ($i=0, $n=$_POST['valueNumber']; $i<$n; $i++)
                {
                    $configOptionValue = new ConfigOptionValue();
                    $configOptionValue->config_id = $model->id;
                    $configOptionValue->label = $_POST['labels'][$i];
                    $configOptionValue->value = $_POST['values'][$i];
                    $configOptionValue->status = Lvc::STATUS_ENABLED;
                    $configOptionValue->sorder = Common::getNewestPosition($configOptionValue);
                    $configOptionValue->save();
                    $idnex++;
                }

                
                
                
				$this->redirect(array('view','id'=>$model->id));
            }

		}

        $this->layout="detail";
		$this->render('update',array(
			'model'=>$model,
            'currentValues'=>$currentValues
		));
	}

	/**
	 * Deletes a particular model.
	 * If deletion is successful, the browser will be redirected to the 'index' page.
	 */
	public function actionDelete()
	{
		if(isset($_POST['select-row'])&&is_array($_POST['select-row']))
        {
            $ids = $_POST['select-row'];
            $ids = implode(',', $ids);
//            Config::model()->deleteAll("id in ($ids)");

            $this->redirect(array('admin'));
        }
		elseif(Yii::app()->request->isPostRequest)
		{
			// we only allow deletion via POST request
//			$this->loadModel()->delete();

			// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
			if(!isset($_GET['ajax']))
				$this->redirect(array('index'));
		}
		else
			throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
	}

	/**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Config');
        $this->layout="list";
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}

	/**
	 * Manages all models.
	 */
	public function actionAdmin()
	{
		$model=new Config('search');
		if(isset($_GET['Config']))
			$model->attributes=$_GET['Config'];

        $this->layout="list";
		$this->render('admin',array(
			'model'=>$model,
		));
	}

	/**
	 * Returns the data model based on the primary key given in the GET variable.
	 * If the data model is not found, an HTTP exception will be raised.
	 */
	public function loadModel()
	{
		if($this->_model===null)
		{
			if(isset($_GET['id']))
				$this->_model=Config::model()->findbyPk($_GET['id']);
			if($this->_model===null)
				throw new CHttpException(404,'The requested page does not exist.');
		}
		return $this->_model;
	}

	/**
	 * Performs the AJAX validation.
	 * @param CModel the model to be validated
	 */
	protected function performAjaxValidation($model)
	{
		if(isset($_POST['ajax']) && $_POST['ajax']==='config-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
	}
    
    public function actionDeleteConfigValue()
	{
		if(isset($_POST['ajax']) && $_POST['configId'] >0)
		{
//            ConfigOptionValue::model()->deleteAll("config_id='".$_POST['configId']."' AND value='".$_POST['configValue']."'");
            
			Yii::app()->end();
		}
	}

    /**
	 * Setting action
	 */
	public function actionSetting()
	{
        $critial = new CDbCriteria();
        $critial->order = "name asc";
        $configGroups = ConfigGroup::model()->findAll($critial);

        if(isset($_POST['Configs']))
		{
            foreach ($_POST['Configs'] as $id=>$value)
            {
                $config = Config::model()->findByPk($id);
                if($config)
                {
                    $config->value = $_POST['Configs'][$id];
                    $config->update();
                }
            }

            
            
            
            Yii::app()->user->setFlash('message', Yii::t('BackEnd', 'Updated successfully.'));
        }
        $this->layout="detail";
		$this->render('setting',array(
            'configGroups' => $configGroups
		));
	}

    public function actionCleanCache()
    {
        //Remove all cache
        Yii::app()->cache->flush();

        Yii::app()->user->setFlash('message', Yii::t('BackEnd', 'All cached data has removed successfully.'));

        $url = Yii::app()->createUrl('/');
        $this->redirect($url);
    }
}
